﻿using QuanLyChoVayCaNhan.Classes;
using QuanLyChoVayCaNhan.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyChoVayCaNhan.Forms
{
    public partial class ViewTaiSanDamBao : Form
    {
        private bool _isAddTSDBAfterLoaded = false;
        private int taiSansSelectedIndex = -1;
        private HoSo _hs = null;
        private HoSo HS
        {
            get { return _hs; }
            set { _hs = value; }
        }
        public ViewTaiSanDamBao()
        {
            InitializeComponent();
        }
        public ViewTaiSanDamBao(bool isAddTSDBAfterLoaded)
        {
            InitializeComponent();
            this._isAddTSDBAfterLoaded = isAddTSDBAfterLoaded;
        }

        void fAddTaiSanDamBao_FormClosed(object sender, FormClosedEventArgs e)
        {

        }

        private void LoadAllData()
        {
            hoSoBindingSource.DataSource = WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedItem;
            HS = ((HoSo)WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedItem);
            taiSansBindingSource.DataSource = ModelManager.GetInstance().db.TaiSans.ToList().FindAll((x) => x.MaHS == HS.MaHS);
            taiSansSelectedIndex = taiSansDataGridView.CurrentRow == null ? -1: taiSansDataGridView.CurrentRow.Index;
            if (HS.TaiSans.Count == 0) taiSansSelectedIndex = -1;
            if (taiSansSelectedIndex == -1)
            {
                taiSanBindingSource.DataSource = new TaiSan();
                WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedTaiSan = null;
            }
            else
            {
                taiSanBindingSource.DataSource = (TaiSan)taiSansBindingSource.Current;
                WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedTaiSan = (TaiSan)taiSanBindingSource.Current;
            }
        }

        private void ViewTaiSanDamBao_Load(object sender, EventArgs e)
        {
            LoadAllData();
            if (_isAddTSDBAfterLoaded)
            {
                EditTaiSanDamBao fAddTaiSanDamBao = new EditTaiSanDamBao(Classes.MenuItemType.ADD);
                fAddTaiSanDamBao.FormClosed += fAddTaiSanDamBao_FormClosed;
                fAddTaiSanDamBao.ShowDialog();
            }
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnViewTSDB_Click(object sender, EventArgs e)
        {
            if (taiSansSelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn tài sản đảm bảo nào");
                return;
            }
            EditTaiSanDamBao fViewTaiSanDamBao = new EditTaiSanDamBao(MenuItemType.VIEW);
            fViewTaiSanDamBao.ShowDialog();
        }

        private void btnAddTSDB_Click(object sender, EventArgs e)
        {
            EditTaiSanDamBao fAddTaiSanDamBao = new EditTaiSanDamBao(MenuItemType.ADD);
            fAddTaiSanDamBao.FormClosed += this.fAddTaiSanDamBao_FormClosed;
            fAddTaiSanDamBao.ShowDialog();
        }

        private void btnEditTSDB_Click(object sender, EventArgs e)
        {
            if (taiSansSelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn tài sản đảm bảo nào");
                return;
            }
            if (!UserManager.GetInstance().IsCBHTQHKH() || UserManager.GetInstance().GetMaNhanVien() != WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedTaiSan.MaNVHTQHKH)
            {
                MessageBox.Show("Ban không có quyền cập nhật biên bản định giá tài sản này.\nQuyền cập nhật thuộc về: " + WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedTaiSan.NhanVienHTQHKH.TenNV);
                return;
            }
            EditTaiSanDamBao fViewTaiSanDamBao = new EditTaiSanDamBao(MenuItemType.EDIT);
            fViewTaiSanDamBao.ShowDialog();
        }

        private void btnInTSDB_Click(object sender, EventArgs e)
        {
            if (taiSansSelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn tài sản đảm bảo nào");
                return;
            }
            if (!UserManager.GetInstance().IsAdmin() && !UserManager.GetInstance().IsCBHTQHKH()) 
            {
                MessageBox.Show("Bạn không có quyền in biên bản định giá tài sản");
                return;
            }
            PrintManager.GetInstance().InBienBanDinhGiaTaiSan(WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedTaiSan);
        }

        private void taiSanDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            taiSansSelectedIndex = taiSansDataGridView.CurrentRow.Index;
            if (HS.TaiSans.Count == 0) taiSansSelectedIndex = -1;
            if (taiSansSelectedIndex == -1)
            {
                taiSanBindingSource.DataSource = new TaiSan();
                WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedTaiSan = null;
            }
            else
            {
                taiSanBindingSource.DataSource = taiSansBindingSource.Current;
                WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedTaiSan = (TaiSan)taiSansBindingSource.Current;
            }
        }

        private void taiSanDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            taiSansSelectedIndex = taiSansDataGridView.CurrentRow.Index;
            if (HS.TaiSans.Count == 0) taiSansSelectedIndex = -1;
            if (taiSansSelectedIndex != -1)
            {
                WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedTaiSan = (TaiSan)taiSansBindingSource.Current;
                EditTaiSanDamBao fViewTaiSanDamBao = new EditTaiSanDamBao(MenuItemType.VIEW);
                fViewTaiSanDamBao.ShowDialog();
            }

        }

        private void ViewTaiSanDamBao_Activated(object sender, EventArgs e)
        {
            LoadAllData();
        }
    }
}
